/*
 * Copyright (c) 2009 Sylvestre Gallon <syl@pmbsd.org>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#import "logger.h"
#import "config.h"

static logger *g_log = NULL;

@implementation logger

+ (id) instance {
	if (g_log == NULL)
		g_log = [[self alloc] init];
	return g_log;
}

- (id) init {
	self = [super init];

	if (self) {
		/* XXX check return value */
		fd = fopen([[config instance] logfile], "a");
	}

	return self;
} 

- (void) logWithLevel: (uint8_t) level andFile: (char *) file andFunction: (const char *)func andLine: (int) line andFormat: (char *)format, ... {
	va_list args;

	va_start(args, format);
	if (level <= [[config instance] loglvl]) {
		printf("#%s:%s:%i\t", file, func, line);
		vprintf(format, args);
		vfprintf(fd, format, args);
	}
	va_end(args);
}

@end
